home *** CD-ROM | disk | FTP | other *** search
/ Interplay's Learn to Program Basic (Review Copy) / Learn to Program Basic Review Copy (Interplay)(June 23, 1998).ISO / pc / ltpbasic / projects / motox.bas < prev    next >
BASIC Source File  |  1998-02-21  |  3KB  |  176 lines

  1. Rem Motocross
  2. Rem by Richard Temps
  3.  
  4. Dim bus(5)
  5. pos = 0
  6. Cls
  7. Background "MotoJump"
  8. cycle = LoadSprite("mtrcycle")
  9. ramp = LoadSprite("motoramp")
  10.  
  11. cycleIdleSnd = LoadSound("BIKESLOW")
  12. cycleGoSnd = LoadSound("BIKEFAST")
  13. crowdSnd = LoadSound("CROWDLP")
  14. crashSnd = LoadSound("TUMBLE")
  15. cheerSnd = LoadSound("CROWD")
  16.  
  17. Rem Now start the game
  18.  
  19. Rem Set up a background sound of
  20. Rem crowd noise
  21. crowdNoise = LoopSound(crowdSnd)
  22.  
  23. Rem Create a random number of busses
  24. busses = Random(0,5)
  25.  
  26. Rem Set up the screen
  27. for t = 1 to busses
  28. bus(t) = LoadSprite("bus")
  29. SetSprite bus(t) to 73+ 36*(t-1), 186
  30. next t
  31.  
  32. Rem Place second ramp
  33. rampx = 73 + 36*busses
  34. SetSprite ramp to rampx,182
  35.  
  36. Rem Now get the speed from the user
  37. Rem that we will use to jump with
  38. speed = 0
  39. While speed < 1 OR speed > 100
  40. Position 0,14
  41. input "Whats the speed (1-100)?",speed
  42. Wend
  43. speed = speed * 1.5
  44. position 0,14
  45. for z = 0 to 38
  46. print " ";
  47. next z
  48.  
  49. rem Convert speed to m/s
  50. speed = ((speed / 100.0) * 20.0)+5.0
  51. Rem Convert m/s to pixels/s
  52. speed = speed * 6.083333333 / 2.0
  53.  
  54. Rem Set up the data for the motorcycle
  55. Rem this assumes a 40 degree angle for the ramp
  56. up = .76604443 * speed
  57. across = .642787609 * speed
  58. start = timer()/1000.0
  59. frame = 0
  60. running = 1
  61. rampelapsed = 0
  62. jump = 0
  63. latch = 0
  64. rampy = 0
  65. Rem Run the motorcycle up the ramp
  66. Rem and make the jump
  67.  
  68. Rem Switch cycle sound to fast
  69. chEngine = PlaySound(cycleGoSnd)
  70.  
  71. while running <> 0
  72. curtime = (timer() / 1000.0) - start
  73. x = -30  + (curtime* across)
  74. Rem before we get to the ramp...
  75. if x < 9 then
  76. y = 196
  77. ramptime = curtime
  78. else
  79. rampelapsed = curtime - ramptime
  80. if jump = 0 then
  81. frame = 1
  82. Rem on the ramp, but not airborne
  83. y = 194 - (rampelapsed * speed * .45)
  84. if y < 161 then
  85. jump = 1
  86. jumpstart = curtime
  87. endif
  88. else
  89. Rem airborne - calculate the position with regard to the force
  90. Rem UP (as determined by the speed) minus the gravity DOWN
  91. if y > 197 or x > 300 then running = 0
  92. if running <> -1 then
  93. jumpelapsed = curtime - jumpstart
  94.  
  95. Rem Jump calculations
  96. up = jumpelapsed * speed * .45
  97. gravity = 12 * jumpelapsed * jumpelapsed
  98. y = 161 - up + gravity
  99.  
  100. Rem Changing frame changes which spriteframe is shown
  101. Rem for the motorcycle as it ascends, levels out and then
  102. Rem descends
  103. If up > gravity and frame = 1 then 
  104. frame = 0
  105. Rem At this point, change sound of cycle
  106. StopChannel chEngine
  107. chEngine = LoopSound(cycleIdleSnd)
  108. EndIf
  109. If gravity > up and frame = 0 then 
  110. frame = 2
  111. Rem At this point, change sound again
  112. StopChannel chEngine
  113. chEngine = PlaySound(cycleGoSnd)
  114. EndIf
  115.  
  116.  
  117. Rem check for collision or landing
  118. wheelx = x + 23
  119. wheely = y + 19
  120. if wheelx < rampx then
  121. if wheely > 185 then running = 0
  122. else
  123. if latch = 0 then
  124. latch = 1
  125. ramptime = curtime
  126. endif
  127.  
  128. Rem crash or completion conditions
  129. rampy = 161 + (curtime - ramptime) * speed * .45
  130. if wheely > 179 and wheelx < rampx then running = 0
  131. if y > rampy and wheelx < rampx+50 and wheelx > rampx and gravity>up then
  132. running = -1
  133. frame = 2
  134. speed = 100 ' speed up to get out!
  135. endif
  136. endif
  137. else
  138. y = 161 + (curtime - ramptime) * speed * .45
  139. if y > 196 then
  140. frame = 0
  141. y = 196
  142. if x > 280 then
  143. running = 0
  144. endif
  145. endif
  146. endif
  147. endif
  148. endif
  149. SetSprite cycle frame frame
  150. SetSprite cycle to x,y
  151. wend
  152.  
  153. Rem Hide cycle if we're at end 
  154. HideSprite cycle
  155.  
  156. Rem End game:  User won or crashed
  157. Position 10,14
  158. StopChannel crowdNoise
  159. if y = 196 then
  160. Print "You won!"
  161. PlaySound(cheerSnd)
  162. else
  163. StopChannel chEngine
  164. Print "You crashed!"
  165. PlaySound(crashSnd)
  166. endif
  167.  
  168. Sleep 25
  169.  
  170. End
  171.  
  172.  
  173.  
  174.  
  175.